﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.UI.WebControls;
using consultasSql.consultasVarias;

public partial class Stdby_Busqueda_tabOrdenTrabajo_selectDestino : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            cargarGrilla("");
            ViewState["ordenarGrilla"] = "ASC";
            Session["filaSeleccionada"] = "-1";
        }
    }

    protected void Grilla_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Attributes["onmouseover"] = "javascript:setMouseOverColor(this);";
            e.Row.Attributes["onmouseout"] = "javascript:setMouseOutColor(this);";
        }
    }


    //cargo grilla
    private void cargarGrilla(string ordenar)
    {
        try
        {
            Grilla.DataSource = darDataSet(ordenar);
            Grilla.DataBind();
        }
        catch { }
    }


    private DataSet darDataSet(string ord)
    {
        string cons = "";

        string Provincia = txtBuscaProvincia.Text.Trim();

        string Localidad = txtBuscaLocalidad.Text.Trim();

        if (!String.IsNullOrEmpty(Provincia))
        {
            if (Provincia.Substring(0, 1) == "*")
            {
                cons += " AND RTRIM(LTRIM(Provincia.Nombre)) LIKE '%' + @Provincia";
            }
            else if (Provincia.Substring(Provincia.Length - 1, 1) == "*")
            {
                cons += " AND RTRIM(LTRIM(Provincia.Nombre)) LIKE @Provincia + '%'";
            }
            else
            {
                cons += " AND RTRIM(LTRIM(Provincia.Nombre)) LIKE @Provincia";
            }
        }

        if (!String.IsNullOrEmpty(Localidad))
        {
            if (Localidad.Substring(0, 1) == "*")
            {
                cons += " AND RTRIM(LTRIM(Localidad.Nombre)) LIKE '%' + @Localidad";
            }
            else if (Localidad.Substring(Localidad.Length - 1, 1) == "*")
            {
                cons += " AND RTRIM(LTRIM(Localidad.Nombre)) LIKE @Localidad + '%'";
            }
            else
            {
                cons += " AND RTRIM(LTRIM(Localidad.Nombre)) LIKE @Localidad";
            }
        }


        string ordenar = "";

        if (!String.IsNullOrEmpty(ord.Trim()))
        {
            ordenar = " ORDER BY " + ord.Trim();
        }


        string consulta = "SELECT Provincia.Nombre AS 'Provincia', Localidad.Nombre AS 'Localidad', OtCab.Calle, OtCab.Altura, OtCab.CoordLong, OtCab.CoordLat FROM OtCab INNER JOIN Provincia ON OtCab.IdProvincia = Provincia.Id INNER JOIN Localidad ON OtCab.IdLocalidad = Localidad.Id WHERE Localidad.IdProvincia = Provincia.Id " + cons +  " GROUP BY Provincia.Nombre, Localidad.Nombre, OtCab.Calle, OtCab.Altura, OtCab.CoordLong, OtCab.CoordLat" + ordenar;

        SqlCommand command = new SqlCommand();
        command.CommandType = CommandType.Text;
        command.CommandText = consulta;

        command.Parameters.Clear();

        if (!String.IsNullOrEmpty(Provincia))
        {
            command.Parameters.AddWithValue("@Provincia", Provincia.Replace("*", ""));
        }

        if (!String.IsNullOrEmpty(Localidad))
        {
            command.Parameters.AddWithValue("@Localidad", Localidad.Replace("*", ""));
        }

        return new CDarDataSet().darDataSet(command);

    }


    //cambio de pagina grilla
    protected void grilla_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        try
        {
            Grilla.PageIndex = e.NewPageIndex;
            cargarGrilla("");
        }
        catch { }
    }


    //ordenar grilla
    protected void Grilla_Sorting(object sender, GridViewSortEventArgs e)
    {
        try
        {
            cargarGrilla(e.SortExpression + " " + ordenarGrilla());
        }
        catch { }
    }

    private string ordenarGrilla()
    {
        try
        {
            if (!String.IsNullOrEmpty(ViewState["ordenarGrilla"].ToString()))
            {
                if (ViewState["ordenarGrilla"].ToString() == "DESC")
                {
                    ViewState["ordenarGrilla"] = "ASC";
                }
                else
                {
                    ViewState["ordenarGrilla"] = "DESC";
                }

            }
            else
            {
                ViewState["ordenarGrilla"] = "ASC";
            }
        }
        catch { }

        return ViewState["ordenarGrilla"].ToString();
    }

    //campo seleccionado
    protected void Grilla_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {

            if (!(Convert.ToString(Session["filaSeleccionada"]) == Convert.ToString(Grilla.SelectedIndex)))
            {
                Session["filaSeleccionada"] = Grilla.SelectedIndex.ToString();
                cargarCampos();
            }
            else
            {
                limpiarCampos();
                Grilla.SelectedIndex = -1;
                Session["filaSeleccionada"] = -1;
            }

        }
        catch { }
    }


    private void cargarCampos()
    {
        try
        {
            if (Grilla.SelectedRow != null)
            {
                GridViewRow grilla = Grilla.SelectedRow;

                txtProvincia.Text = HttpUtility.HtmlDecode(grilla.Cells[1].Text);
                txtLocalidad.Text = HttpUtility.HtmlDecode(grilla.Cells[2].Text);
                txtCalle.Text = HttpUtility.HtmlDecode(grilla.Cells[3].Text);
                txtAltura.Text = HttpUtility.HtmlDecode(grilla.Cells[4].Text);
                txtLongitud.Text = HttpUtility.HtmlDecode(grilla.Cells[5].Text);
                txtLatitud.Text = HttpUtility.HtmlDecode(grilla.Cells[6].Text);
            }
        }
        catch { }
    }


    private void limpiarCampos()
    {
        try
        {
            txtProvincia.Text = "";
            txtLocalidad.Text = "";
            txtCalle.Text = "";
            txtAltura.Text = "";
            txtLongitud.Text = "";
            txtLatitud.Text = "";
        }
        catch { }
    }


    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        cargarGrilla("");
    }
}
